package com.kuang.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Slf4j
@Component // 一定不要忘记把处理器加到IOC容器中！

/**
 *
 *     @TableField(fill = FieldFill.INSERT)
 *     private Date createTime;
 *
 *     在插入和更新的时候都更新（第二步：实现MetaObjectHandler接口，缺一不可）
 *     @TableField(fill = FieldFill.INSERT_UPDATE)
 */
public class MyMetaObjectHandler implements MetaObjectHandler {
    // 插入时的填充策略
    //调用插入方法走这个
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill.....");
        // 单纯的调用这一个方法是没用的，必须配合上实体类的注解
        // setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    // 更新时的填充策略
    // 调用更新方法走这个
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill.....");
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}
